package com.itany.corejava.code01_Java基础;

/**
 * @author: 石小俊
 * @date: 2023年02月28日 14:48
 * @version: 1.0
 * byte、short、char --> int  --> long --> float --> double
 */
public class Test04_自动类型转换 {
    public static void main(String[] args) {
        byte b = 100;
        short s = 100;
        int i = 100;
        long l = 100l;
        // 此时byte与int做运算,会自动转换成int类型
        // 如果使用byte进行接受, 则编译报错
        // 运行报错的信息:不兼容的类型, 从int转换到byte可能会有损失
        // byte sum = b+i;
        int sum = b + i;
        System.out.println(sum);

        // 当short与int运算时,自动转换成int类型
        // short sum2 = s + i; // 报错
        sum = s + i;
        System.out.println(sum);

        // 当int与long进行运算时,自动转换成long类型
        // int sum3 = i+l;
        long sum3 = i + l;

        // byte与short进行运算时,既不能使用short,也不能使用byte接收
        // 此时可以通过int接收
        int sum4 = b + s;
        System.out.println(sum4);

        float f = 3.14f;
        double d = 5.12;
        // long与float进行运算,使用float进行接收
        // long sum5 = l + f;
        float sum5 = l + f;
        System.out.println(sum5);

        // float与double进行运算, 使用double进行接收
        // float sum6 = f + d;
        double sum6 = f + d;
        System.out.println(sum6);

        // char类型转换成数字,是根据ASCII码进行转换
        char c1 = 'A';
        char c2 = 'a';
        // char可以自动转换成int
        int i1 = c1;
        int i2 = c2;
        System.out.println(i1);
        System.out.println(i2);

        // char类型与short、byte运算时可以使用int接收
        // 此时的char会先转换成数字,再参与运算
        // 此处相当于100+65
        int sum7 = s + c1;
        System.out.println(sum7);
    }
}
